//
//  NSObject+TYJSONSerialization.h
//  TYFoundationUtils
//
//  Created by 郭艺伟 on 2019/2/27.
//  Copyright © 2019年 厦门IOS开发团队. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSObject (TYJSONSerialization)
/**
 *    验证对象是否可以被等价转换成JSON字符串，对象需要满足如下条件才可转换：
 - 该对象必须为NSArray或者NSDictionary
 - 所有的对象都必须是NSString, NSNumber, NSArray, NSDictionary, NSNull
 - 所有的key-value类型对象的key类型都必须是NSString
 - NSNumbers必须不为NaN或者无穷大
 *
 *    @return 返回YES如果可以转换成JSON字符串，否则返回NO
 */
- (BOOL)ty_isValidJSONObject;

/**
 *    @see -ty_jsonRepresentationWithError:
 */
- (NSString *)ty_jsonRepresentation;

/**
 *    将一个对象转换成等价表达的JSON字符串
 *
 *    @param error 发生错误时的描述
 *
 *    @return 返回该对象等价JSON字符串，该对象无法等价转换则返回nil
 */
- (NSString *)ty_jsonRepresentationWithError:(NSError * __autoreleasing *)error;

/**
 *    将一个对象转换成等价表达的JSON字符串
 *
 *    @param options 输出选项
 *    @param error   发生错误时的描述
 *
 *    @return 返回该对象等价JSON字符串，该对象无法等价转换则返回nil
 */
- (NSString *)ty_jsonRepresentationWithOptions:(NSJSONWritingOptions)options error:(NSError * __autoreleasing *)error;
@end
